home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat18 / aush_v1.52 / aushenglish.doc < prev    next >
Text File  |  1992-02-22  |  32KB  |  771 lines

  1.  
  2.                 AUSH - Reference Manual
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   1. Foreword
  9.  
  10.       This manual describes release 1.52 of the utility AUSH. This program
  11.   is (c)1992 by Denis  GOUNELLE,  any  commercial  usage  or  selling  without
  12.   author's written authorization is  strictly  forbidden.  You  can  copy  and
  13.   spread this program at the following conditions:
  14.  
  15.     - all the files must be provided
  16.     - none of the file must have been modified
  17.     - you don't charge more than $6 for copy fee
  18.  
  19.       In spite of several tests, no  warranty  is  made  that  there's  no
  20.   errors in AUSH. YOU USE THIS PROGRAM AT YOUR OWN RISKS. In no event  will  I
  21.   be liable for any damage, direct or indirect, resulting of the use of  AUSH.
  22.  
  23.   2. Introduction
  24.  
  25.       AUSH (Amiga Ultimate SHell)  is  a  new  command  line  interpreter,
  26.   designed to replace Commodore's shell. It takes several features  from  some
  27.   UNIX and Amiga shells I used (sh, csh, tcsh  6.00.03,  AShell  1.3  and  Csh
  28.   4.01A) but also adds a lot of  new  possibilities,  while  remaining    almost
  29.   fully compatible with Commodore or ARP shells.
  30.  
  31.       Critics and suggestions will be welcomed.  Write  to    the  following
  32.   address:
  33.  
  34.                    M. GOUNELLE Denis
  35.                     Boite 71
  36.                   6, rue des cailloux
  37.                  92110 CLICHY - FRANCE
  38.  
  39.       The command line editor has been written  starting  from  Csh's  one
  40.   (v4.02 by Matt DILLON/Steve DREW/Carlo BORREO/Cesare DIENI).
  41.       Many thanks to Pierre  ARDICHVILI,  Jean-Yves  PROUX,  Jean-Philippe
  42.   RAPP, and Michel SCHINZ for tests and suggestions. Thanks  to  Josef    EGLOFF
  43.   for translating error messages in german.
  44.  
  45.   3. Installation
  46.  
  47.       Under system release 1.3, you must first install the ARP library (if
  48.   not allready done) in your "LIBS:" directory.
  49.       Then copy the "AUSH" (the shell itself) and  "NewAUSH"  (command  to
  50.   start a new shell) files in your "C:" directory. Both AUSH and  NewAUSH  are
  51.   written in "pure" code, and so can be made resident.
  52.  
  53.   4. The NewAUSH command
  54.  
  55.       The NewAUSH command  is  the    command  to  start  a  new  shell  (as
  56.   Commodore's NewCLI and NewShell). It won't work unless you put AUSH  in  the
  57.   command search directories defined by the "Path" command.  To  start  a  new
  58.   shell, enter the following command:
  59.  
  60.              NewAUSH [window specification]
  61.  
  62.              Example: NewAUSH CON:0/11/640/180/AUSH
  63.  
  64.       From WorkBench, you  must  create  a    "Project"  icon,  and  specify
  65.   NewAUSH complete path in the "DEFAULT TOOL" field. You can  also  specify  a
  66.   stack size ("STACK" field) and a window specification ("TOOLS  TYPE"  field,
  67.   the syntax is "WINDOW=specification").
  68.  
  69.   5. Command line parsing
  70.  
  71.       Each command you enter is parsed by AUSH before it tries to  execute
  72.   it. First, alias substitution is performed on command name. An alias can  be
  73.   defined by another one (CAUTION: there's no test for alias recursion !). You
  74.   can prevent alias substitution by adding a "\" character before command name
  75.   (e.g. "\ls df0:").
  76.       All  command    arguments  are    also  scanned,     and   the   following
  77.   substitutions are performed:
  78.  
  79.       ;       start comment (the rest of the line is discarded).
  80.       ^chr      replaced by "CTRL-chr" if "chr" is a  letter,  by  "chr"
  81.           otherwise.
  82.       =n      replaced by the n-th directory in the directory stack.
  83.       $var      replaced by the value of the given variable  (the  local
  84.           variables are scanned first, then the global    variables,
  85.           and last the ARP/Commodore and Manx variables  list)    or
  86.           by an empty string is this variable is not defined.
  87.           Variable names may be put between brackets : to  display
  88.           the value of variable "foo"  followed  by  "hello",  you
  89.           must    type   "echo   ${foo}hello"   instead   of   "echo
  90.           $foohello".
  91.           Variable names may be followed by a function name.  This
  92.           function will be applied on variable value (if  variable
  93.           is  defined)    during    substitution.  Effective  variable
  94.           value is not modified. Function supported are:
  95.  
  96.           lower   convert to lower-case
  97.           upper   convert to upper-case
  98.           first   extract first character
  99.           slead   skip leading tabs or spaces
  100.           len      return len
  101.  
  102.           The syntax is "$var:function", e.g.  "$config:lower"  or
  103.           "${config:lower}".
  104.       pattern      replaced by the name of all files matching the  pattern.
  105.           A pattern is a word with at least one of the ARP  (under
  106.           system   1.3)   or   AmigaDOS   (under    system    2.0)
  107.           meta-characters. Take care  that  some  commands  (list,
  108.           copy, ...) expect the pattern and expand it  themselves,
  109.           so you'll have to quote it (e.g. "list '#?.o'") in order
  110.           to avoid conflicts.
  111.       {expr}      replaced by the result of the expression (see below  for
  112.           syntax).
  113.       !!      replaced by last command in history.
  114.       !n      replaced by n-th command in history.
  115.       !str       replaced  by  last  command    beginning  with  "str"  in
  116.           history.
  117.       `cmd`       replaced by the first output line of specified  command.
  118.           Leading spaces are deleted, the line is considered as  a
  119.           whole word and is not parsed again.
  120.           Example: "set foo `type config`" copies the  first  line
  121.           of "config" file in a local variable named "foo".
  122.       \chr      escape the meaning of the "chr" character.
  123.       'str'       copies "str" without  parsing  (except  for  the  "\chr"
  124.           form).
  125.       "str"       copies "str" without parsing (except for  "^chr",  "=n",
  126.           "$var", "{expr}" and "\chr" forms, pattern expansion  is
  127.           not disabled).
  128.       >file      specify output redirection. If the file does    not  exist
  129.           it is created, otherwise it is truncated to zero length.
  130.       >>file      specify output redirection. If the file does    not  exist
  131.           it is created, otherwise output is  append  to  previous
  132.           file's content.
  133.       <file      specify input redirection.
  134.       @pri      run command at priority "pri" (can be specified anywhere
  135.           on the command line).
  136.       &[pri]      run command in background [at priority  "pri"]  (can  be
  137.           specified anywhere on the command line).
  138.  
  139.   Under 1.3 system release, command line length is limited to  256  characters
  140.   for external commands. AUSH also recognize the following constructions:
  141.  
  142.       cmd1|cmd2|...   execute commands with "pipes"  (the  output  of  the
  143.               commands at the left of the "|" character is used as
  144.               input by the commands  to  the  right)  as  long    as
  145.               return code is zero.
  146.       cmd1,cmd2,...   execute commands as long as return code is zero. You
  147.               can also specify pipes, e.g. "cd ram: , list | wc  ,
  148.               delete foo" is a valid command.
  149.  
  150.   Return code of such  commands  is  the  return  code    of  the  last  command
  151.   executed. Only the last command can be runned in background.
  152.  
  153.   6. Variables
  154.  
  155.       With AUSH, you can define local and global  variables  in  order  to
  156.   store any numeric or alphanumeric value. Valid characters for variable names
  157.   are lowercase and uppercase letters, digits and  the    underscore  character.
  158.   AUSH distinguish lower case and  uppercase  letters  when  searching    for  a
  159.   variable.
  160.       A global variable is "visible" at any execution level. It  can't  be
  161.   destroyed. Notice that these variable are not ARP/Commodore variables.  They
  162.   are not shared between several shells running at  the  same  time.  A  local
  163.   variable is "visible" only at the execution level where it has been defined.
  164.   When comming back to the previous execution level, all local    variables  are
  165.   destroyed.
  166.       Some variables are used to control AUSH  behaviour  (see  below  for
  167.   description).
  168.  
  169.   7. Expressions
  170.  
  171.       AUSH can compute integer expressions in reverse polish notation. You
  172.   can use variables in such expressions, if their value is  numeric.  You  can
  173.   enter hexadecimal values (e.g.: 0x13e).  Result  is  displayed  in  decimal.
  174.   Operators are:
  175.  
  176.       +      addition
  177.       -      subtraction
  178.       *      multiplication
  179.       /      integer division
  180.       %      remainder of integer division
  181.       <      shift left
  182.       >      shift right
  183.       &      and
  184.       |      or
  185.       sx      store stack top in register x (x = 0 to 9)
  186.       lx      push register x (x = 0 to 9)
  187.       HEX      change output base to hexadecimal
  188.  
  189.   Registers are set to zero when you start AUSH, and are not modified  between
  190.   two expression evaluations. Numbers and operators must be  separated    by  at
  191.   least one space.
  192.  
  193.   Examples:
  194.  
  195.       echo { 34 3 / 4 + } => 15
  196.       echo { 7 3 - }      => 4
  197.       echo { 10 -2 + }    => 8
  198.  
  199.       set cpt 3
  200.       echo { $cpt 2 * }   => 6
  201.       set cpt { $cpt 1 + }
  202.       echo $cpt          => 4
  203.  
  204.   8. Command line editing
  205.  
  206.       Command line editing is enabled by setting the  "lineedit"  variable
  207.   to "1". AUSH takes control of the shell window, and recognize the  following
  208.   keys:
  209.  
  210.       left      previous character.
  211.       right      next character.
  212.       shift-left  previous word.
  213.       shift-right next word.
  214.       shift-up      last command in history beginning with the current line.
  215.       up      previous command in history.
  216.       down      next command in history.
  217.       ^A      beginning of line.
  218.       ^B      previous character.
  219.       ^E      end of line.
  220.       ^F      next character.
  221.       ^K      delete end of line.
  222.       ^L      refresh line.
  223.       ^N      next command in history.
  224.       ^P      previous command in history.
  225.       ^T      first command in history.
  226.       ^W      delete end of word.
  227.       ^X      kill current line.
  228.       ^Z      last command in history.
  229.       RETURN      save command and execute it.
  230.       ESC      save command but don't execute it.
  231.  
  232.       ^V      suppose that previous word is a variable
  233.           name, and replace it by it's value.
  234.           Example: echo version<^V> => echo 1.10
  235.       TAB      filename/varname completion.
  236.           Example:    cd ram:
  237.                   list Cl<TAB>  => list ClipBoards/
  238.                   echo $hi<TAB> => echo $history
  239.           If the prefix you gave matches several names, it is
  240.           extended up to the point of ambiguity and all the
  241.           possibility are displayed.
  242.           To perform filename completion, AUSH adds the content
  243.           of the "filepat" variable to the prefix and expands
  244.           the resulting pattern.
  245.       ^D      displays the list the possibilities for filename/
  246.           varname completion, but does not modify command line.
  247.  
  248.       HELP      opens a file requester. If you select a file, it's
  249.           name will be added to the command line.
  250.  
  251.       f1 to f10   replaced by the content of "f1" to "f10" variables
  252.           (of "F1" to "F10" if shifted).
  253.  
  254.   The "keys" special variable may be  used  to  remap  control  keys  (see
  255.   below).
  256.  
  257.   IMPORTANT: the line editor sometimes suddenly stops to react to whatever
  258.   you type. You will generaly get out of this situation just by  typing  a
  259.   "|" (SHIFT-\).
  260.  
  261.   9. Other features
  262.  
  263.       AUSH can execute script files (which are text  files  containing
  264.   several commands) just as any other program. In such    files,    the  local
  265.   variable "argc" is set to the number of arguments you  gave.  AUSH  also
  266.   set some "pseudo" local variables (the "set" command  won't  show  them,
  267.   and you can't modify them) : the variable "0" is set to the script  file
  268.   name, "*" to the argument list (each argument separated by a space)  and
  269.   "1", "2",... variable to the  arguments  themselves.  On  startup,  AUSH
  270.   tries to execute the "S:.aushrc" script file.
  271.  
  272.       AUSH can  save  your    commands  in  an  history.  The  "history"
  273.   variable tells how much commands are to be kept. The    "history"  command
  274.   displays  history  content.  The  "savehist"  variable  tells  how  much
  275.   commands must be saved when you quit AUSH. This file is read    when  AUSH
  276.   starts, and all commands in the file are stored in the command  history.
  277.   You can define the "histfile" variable to the name of the file to use to
  278.   save/load command history. Default name is "S:.history".
  279.  
  280.       The alias "dircmd" (if defined) is executed each time you  enter
  281.   a directory name as a  command  name    (without  arguments,  redirection,
  282.   pipe, or background specification). So, "alias dircmd cd" gives  you  an
  283.   "implicit cd": to change of directory you just have  to  enter  the  new
  284.   directory name. Of course, you can define a  more  complex  alias,  like
  285.   "alias dircmd 'cd [] , list QUICK FILES'".
  286.  
  287.       AUSH manage a stack  of  directory  (64  entries).  You  push  a
  288.   directory with "pushd", you pop a directory with "popd",  and  you  list
  289.   the stack content with "dirs" (all these internal commands are described
  290.   below). You can use this stack in  you  commands,  with  the    "=n"  form
  291.   (replaced by the n-th directory in the stack).
  292.  
  293.       With the default stack of 4000 bytes, AUSH  can't  execute  more
  294.   than about 15 nested script files and/or loops  (you'll  get  the  error
  295.   "not enough stack space !").
  296.  
  297.       If the name of the output redirection file is "TTY" (i.e. ">TTY"
  298.   or ">>TTY") the output will be redirected to the  shell's  window.  This
  299.   may be useful to in a script file, to display a message when all  output
  300.   have been redirected to a file.
  301.  
  302.       Pipes are handled via temporary files  in  the  "T:"  directory,
  303.   unless I've try to use "PIPE:" and "FIFO:" handlers. The "T:"  directory
  304.   is also used for command substitution and loop execution.
  305.  
  306.       A command like "cmd &" is the same as "run cmd" under  Commodore
  307.   or ARP shells. AUSH will wait for *ALL* background  commands    to  finish
  308.   before terminate. Use the "jobs" command to list background commands.
  309.  
  310.   10. Internal commands
  311.  
  312.       These commands can't be runned in background, but can  be  input
  313.   and/or output  redirected.  They  always  return  0  (RETURN_OK)  or  20
  314.   (RETURN_FAIL). "set" and "setvar" commands display variables with  their
  315.   attributes ("x" for exportable, "r" for readonly).
  316.  
  317.       alias
  318.       Displays all alias and their definitions.
  319.  
  320.       alias name
  321.       Displays definition of alias "name".
  322.  
  323.       alias name 'string'
  324.       Define alias "name" to the given string. In the string,  the
  325.       "[]" symbol tells AUSH where to copy alias arguments. Unless
  326.       it is a single word, the string *MUST* be single-quoted.
  327.  
  328.       cd [dir]
  329.       Without argument displays the name of the current directory,
  330.       otherwise sets current directory to "dir".
  331.  
  332.       dirs
  333.       Displays the directory stack.
  334.  
  335.       echo [-c] [args...]
  336.       Just displays all given arguments, followed  by  a  new-line
  337.       character (except if you specify the "-c" option).
  338.       eval
  339.       Enters expression evaluation mode: every line you  enter  is
  340.       supposed to be a expression, which result is    displayed.  To
  341.       exit this mode, enter the character "x" alone on a  newline.
  342.  
  343.       exit [code]
  344.       Returns to previous  execution  level,  with    the  specified
  345.       return code  (0  if  no  arguments).  In  interactive  mode,
  346.       terminates the shell.
  347.  
  348.       export vars...
  349.       Makes the given local variables "exportable", so they can be
  350.       read, modified or destroyed by any script file started  from
  351.       the current execution level.
  352.  
  353.       for var in val1 val2... valn
  354.       ....
  355.       done
  356.       Performs a loop. The local variable "var"  is  set  to  each
  357.       value in the list, and for each value the loop is  executed.
  358.       After the "done" command, the "var" variable tells for which
  359.       value the loop was last executed.
  360.       You can also use the form "for var in val1 ..  val2",  where
  361.       "val1" and "val2" are numeric values. Both  numbers  may  be
  362.       negatives. If "val2" is lower than "val1", loop step will be
  363.       negative.
  364.  
  365.       history [str]
  366.       Displays the command history. If the optional "str" argument
  367.       is specified, only commands beginning by  the  "str"  string
  368.       will be displayed.
  369.  
  370.       if [NOT] condition
  371.       ....
  372.       [else
  373.       ....]
  374.       endif
  375.       Conditionnal execution. The condition may be:
  376.  
  377.           -d name      true if "name" if a directory (1)
  378.           -e name      true if "name" exists (1)
  379.           -f name      true if "name" is a file (1)
  380.           -o name name2   true if "name" and "name2" exist
  381.                   and "name" is older than "name2" (1)
  382.           -s name      true if "name" is not an empty file (1)
  383.           str = str   true if strings are equal
  384.           str == str  true if strings are equal
  385.               (case-insensitive)
  386.           n1 LT n2      true if n1 is lower than n2
  387.           n1 LE n2      true if n1 is lower than or equal to n2
  388.           n1 EQ n2      true if n1 is equal to n2
  389.           n1 NE n2      true if n1 is not equal to n2
  390.           n1 GT n2      true if n1 is greater than n2
  391.           n1 GE n2      true is n1 is greater than or equal to n2
  392.  
  393.       The word "NOT" may be used to invert the condition. Up to 16
  394.       "if" commands may be nested.
  395.  
  396.       (1) If the letter after the  minus  sign  is  an  upper-case
  397.           letter (e.g. "-D"),  the  test  will  fail  without  any
  398.           AmigaDOS requester if volume is not mounted, if there is
  399.           no disk in drive, etc...
  400.  
  401.       jobs
  402.       Displays the list of background commands.
  403.  
  404.       loadhist
  405.       Loads immediatly command history from history file.  May  be
  406.       useful if you've just changed the "histfile"  variable,  and
  407.       want to use the new history file.
  408.  
  409.       popd [nb]
  410.       Without arguments, pops the last directory in the  directory
  411.       stack and make it the current directory.  Otherwise,    truncs
  412.       stack size to "nb" entries (i.e. "popd 0" clears the stack).
  413.  
  414.       pushd dir
  415.       Pushes the current directory in the directory stack and sets
  416.       current directory to "dir".
  417.  
  418.       read [-f] var
  419.       Sets local variable "var" to the first line read on standard
  420.       input. Returns RETURN_FAIL on end of file.  If  you  specify
  421.       the "-f" option, the user won't be allowed to enter an empty
  422.       string.
  423.  
  424.       readonly vars...
  425.       Makes the specified variables "readonly". This works both on
  426.       local and global variables.
  427.  
  428.       set
  429.       Displays all local variables and their values.
  430.  
  431.       set name
  432.       Displays value of local variable "name."
  433.  
  434.       set name value
  435.       Sets local variable "name" to "value".
  436.  
  437.       setvar
  438.       Displays all global variables and their values.
  439.  
  440.       setvar name
  441.       Displays value of global variable "name."
  442.  
  443.       setvar name value
  444.       Sets global variable "name" to "value".
  445.  
  446.       shift
  447.       Shifts script file arguments: "1" pseudo-variable is set  to
  448.       "2", "2" is set to "3",... The "argc" and "*" variables  are
  449.       updated.
  450.  
  451.       source file
  452.       Execute a script file. If you specify an output redirection,
  453.       all commands in the file will be redirected.
  454.  
  455.       stop [code]
  456.       Exits a "for...done" loop with the specified return code  (0
  457.       if no arguments).
  458.  
  459.       time <command>
  460.       Runs the given command and displays the  execution  time  of
  461.       this command.  Can  be  used    for  all  commands,  including
  462.       internal and background ones.
  463.  
  464.       unalias name...
  465.       Destroys the specified aliases.
  466.  
  467.       unset name...
  468.       Destroys the specified local variables.
  469.  
  470.       writehist
  471.       Writes immediatly command history to history    file.  Can  be
  472.       useful, for example, before running a program that may crash
  473.       you Amiga.
  474.  
  475.   11. Special variables
  476.  
  477.       These variables are used to control AUSH. You should define them
  478.   as global variables (that what AUSH does  when  setting  them  to  their
  479.   initial value).
  480.  
  481.       cmdnum      command number (_ShellNumber_CmdNumber, guaranted to
  482.           be different for each command being executed).
  483.       cwd      current directory.
  484.       debug      if set to "1", displays commands  before  and  after
  485.           parsing (may be useful to debug script files).
  486.       delim      list of word delimiters for "next  word",  "previous
  487.           word" and "delete end  of  word"  functions  of  the
  488.           command line editor.
  489.           Initial value: " :/".
  490.       filepat      string added to current  word  to  perform  filename
  491.           completion.
  492.           Initial value: "#?".
  493.       fullhist      if set to "1", save all  commands  in  the  history.
  494.           Otherwise, don't save twice again the same  command.
  495.       histfile      name    of  the  file  to  use    to  save/load  command
  496.           history. If not set, "S:.history" is assumed.
  497.       histmin      minimal length that must have a command in order  to
  498.           be saved in history.
  499.           Initial value: 3.
  500.       insert      if set to "1", command line  edition  is  in  insert
  501.           mode (overstrike mode otherwise).
  502.           Initial value: 1.
  503.       ioerror      last IoErr() code sets by an internal command.
  504.           Initial value: 0.
  505.       keys      allows you to remap control keys. Must be set  to  a
  506.           string  of  lowercase  characters,  each   character
  507.           setting the control key to use to call  one  of  the
  508.           command line editor's functions.  The  corresponding
  509.           function is found thanks  to    the  position  of  the
  510.           letter in the string :
  511.  
  512.               position 1  go to beginning of line
  513.               position 2  previous character
  514.               position 3  list completion
  515.               position 4  go to end of line
  516.               position 5  next character
  517.               position 6  kill end of line
  518.               position 7  refresh line
  519.               position 8  next line
  520.               position 9  previous line
  521.               position 10 swap characters
  522.               position 11 go to beginning of history
  523.               position 12 replace variable
  524.               position 13 kill end of word
  525.               position 14 kill line
  526.               position 15 go to end of history
  527.  
  528.           For example, if the fourth letter is "o",  you  will
  529.           have to  press  ^o  to  go  to  end  of  line.  When
  530.           remapping control keys, avoid to use ^h, ^i, ^j  and
  531.           ^m keys, because they are handled in a special  way.
  532.           Initial value : "abdefklnpstvwxz".
  533.       language      language for error messages. If not defined, or  set
  534.           to something different from "english" (for  english)
  535.           and "deutsch" (for german), messages are in  french.
  536.       lineedit      if set to "1", enables AUSH command line editor.
  537.       noexpand      if set to "1", patterns in  command  lines  are  not
  538.           expanded.
  539.       path       command  search  path.  Directory  names  must   be
  540.           separated by a semi-colon  character    ";",  and  the
  541.           name "." stands for the current directory. If a file
  542.           with the "s" bit set if found when searching  for  a
  543.           command, a "source" command is automatically run  on
  544.           this file.
  545.           Example: setvar path 'ram:;.;c:;sys:utilities'
  546.       prompt      defines normal prompt. You can include the following
  547.           sequences:
  548.  
  549.               %h      current history number
  550.               %#      shell number
  551.               %i      "if...endif" nesting level
  552.               %l      "for...done" nesting level
  553.               %c      current directory ("cwd" variable)
  554.               %s      last return code ("status" variable)
  555.               %Vname  valeur of "name" variable
  556.               %T      time (HH:MM:SS)
  557.               %d      day in the month (1-31)
  558.               %D      day in the week (Mon-Sun)
  559.               %m      month (1-12)
  560.               %M      name of the month (Jan-Dec)
  561.               %y      year (1900-1999)
  562.               %C      CSI character (0x9B)
  563.               %N      carriage return
  564.               %f      size of FAST memory free
  565.               %v      size of CHIP memory free
  566.               %a      size of memory free (FAST+CHIP)
  567.  
  568.           Initial value: "%C0;33;40m< %# - #c >%C0;31;40m"
  569.       prompt2      defines prompt between "if" and "endif".
  570.           Initial value: "%i> ".
  571.       prompt3      defines prompt between "for" and "done".
  572.           Initial value: "%l) ".
  573.       savehist      number of commands to save. If not defined or set to
  574.           a value lower than 1, nothing is saved.
  575.       status      last return code.
  576.       titlebar      defines the titlebar of  the    current  window  (same
  577.           syntax as for the prompts).
  578.       trap      command(s) to run when  CTRL-C  or  CTRL-D  are  hit
  579.           during a script file or a loop execution. I  suggest
  580.           to define it as  a  local  variable,    so  that  each
  581.           script file could modify it  for  it's  own  use.  I
  582.           suggest also to  give  an  "exit"  command  as  last
  583.           command (e.g. "set  trap  'delete  $tmpfile  ,  exit
  584.           20'"), otherwise execution will not be  stopped  (so
  585.           to ignore  breaks  use  "set  trap  ';'").  If  this
  586.           variable is not defined, execution is stopped with a
  587.           return code of 20.
  588.       version      current version of AUSH.
  589.  
  590.   12. History
  591.  
  592.     v1.00   28-Feb-92, 29564 bytes
  593.         o First release.
  594.  
  595.     v1.10   28-Mar-92, 31828 bytes
  596.         o When expanding vars, look also  in  ARP/Commodore  and  Manx
  597.           lists.
  598.         o "^D" key displays possibilities for file/varname  completion
  599.           ; "^B", "^F", "^N" and "^P" keys  do  the  same  as  "left",
  600.           "right", "down" and "up" keys.
  601.         o The command line    editor    erase  cursor  while  executing  a
  602.           command (faster display).
  603.         o The file request    read  the  current  work  to  set  request
  604.           initial's directory.
  605.         o Reset SIGBREAKF signals when  returning  from  command  line
  606.           editing (they are set if you press "^D", "^E" or "^F"  keys)
  607.         o "!!", "!n" and "!string" can be specified  anywhere  on  the
  608.           command line.
  609.         o Added -D, -E and -F switches to "if" command.
  610.         o Added  "for  var  in  val1   ..   val2"   specification   to
  611.           "for...done" command.
  612.         o Added alias "dircmd".
  613.         o Add a space after an alias definition without  argument  (if
  614.           you enter "alias ls dir", and then type "ls ram:", you  will
  615.           no longer have a "Please insert volume dirram: in any drive"
  616.           requester).
  617.         o Error messages in german if the "language" variable  is  set
  618.           to "deutsch".
  619.         o Renamed "setenv" command to "setvar" (no more conflicts with
  620.           Commodore's command), added "echo" command.
  621.         o Added special variables "version" and "path", the  "ioerror"
  622.           command is initialized  to  "0",  the  "insert"  command  is
  623.           initialized to "1", removed "autocd" variable.
  624.  
  625.     v1.11   29-Mar-92, 31832 bytes
  626.         o Bug fixed: The "echo" command can new be output  redirected.
  627.  
  628.     v1.12   11-Apr-92, 32244 bytes
  629.         o Load history *after*  "S:.aushrc"  execution,  in  order  to
  630.           allow a change of the value of  "history"  variable  in  the
  631.           startup-sequence.
  632.         o Added "NE", "LE", and "GE" switches to "if" command.
  633.         o In "for i in val1 ..  val2"  specification,  "val2"  may  be
  634.           lower than "val1", and both value may be negative.
  635.         o No more checking of arguments size for internal commands.
  636.         o Added "^V" key to command line editor.
  637.  
  638.     v1.13   18-Apr-92, 32280 bytes
  639.         o When searching a command with  the  "path"  variable,  check
  640.           that the object is a file (and not a directory).
  641.  
  642.     v1.14   26-Apr-92, 32300 bytes
  643.         o Two bugs fixed in command substitution:  didn't  remove  the
  644.           final "`", error in arguments length computation.
  645.         o Bug fixed in  the  parser:  didn't  escaped  "<>,;"  special
  646.           meaning when in first position of a quoted string.
  647.         o Better german messages.
  648.  
  649.     v1.15   01-May-92, 32364 bytes
  650.         o Added "histfile" variable.
  651.         o Two bug fixed in    arguments  length  computation:  forgetted
  652.           quotes, and  didn't  add  some  more  space  for  "splitted"
  653.           arguments.
  654.  
  655.     v1.16   11-May-92, 32404 bytes
  656.         o Bug fixed: the "-c" option of "echo" command *really* delete
  657.           the final "\n" (doesn't replace it with a space)
  658.  
  659.     v1.20   16-May-92, 32568 bytes
  660.         o Added "loadhist" and "writehist" commands.
  661.         o Added "%Vname" specification to prompt syntax.
  662.         o Parser modified: parse  right  part  of  a  complex  command
  663.           *after* left part execution, so :
  664.           - "cd ram: , delete *" does what expected ("*" was  expanded
  665.         before going to "ram:")
  666.           - all commands in a complex command may be aliases (not only
  667.         the first one)
  668.           - you can write a loop in one command ("for i in 1 ..  50  ,
  669.         echo $i , done" didn't worked, now even "cd ram: ,  for  i
  670.         in *.c , echo $i , compress $i , done , echo fini" does !)
  671.  
  672.     v1.21   17-May-92, 32912 bytes
  673.         o Added "time" command.
  674.  
  675.     v1.22   23-May-92, 32944 bytes
  676.         o Bug  fixed  in  loop  handling:  when  writing  commands    to
  677.           temporary file, didn't ensure there  was  a  "\n"  character
  678.           after each command.
  679.  
  680.     v1.23   01-Jun-92, 33328 bytes
  681.         o Several bugs fixed in  loop  handling  (when  written  on  a
  682.           single line) : now "for i in 1 .. 5,echo $i,done" and "for i
  683.           in 1 .. 5 , list | wc , done" work.
  684.         o If a file with the "s" bit set if found, when searching  for
  685.           a command in the path defined  by  the  "path"  variable,  a
  686.           "source" command is automatically run on this file.
  687.         o The "^S" key swaps the two previous characters.
  688.         o The "^D" and "<TAB>" keys can now be  used  without  prefix,
  689.           i.e. at the beginning of a line or after a space    character.
  690.         o Bug fixed in command line editor: after  a  "shift-up"  key,
  691.           the "up" and "down" keys didn't give the expected  commands.
  692.  
  693.     v1.30   14-Jun-92, 33932 bytes
  694.         o Fixed  several   errors    detected   with   "Enforcer"   and
  695.           "Mungwall".
  696.         o Bug fixed in "shift" command: didn't set "argc" to the  good
  697.           value.
  698.         o Handles "$*" (list of arguments separated with a space).
  699.         o Added -f option to "read" command.
  700.         o "argc" variable is now read-only.
  701.         o Checks varnames given to internal commands  ("pseudo"  local
  702.           variables are not allowed).
  703.         o "&[pri]" and "@pri" can be specified anywhere on the command
  704.           line.
  705.  
  706.     v1.40   26-Jun-92, 37764 bytes
  707.         o Now  compiled   with   SAS/C   5.10b   (with   pragmas   and
  708.           optimization)
  709.         o Can be made resident ("pure" code)
  710.         o Bug fixed in strxcat() function: didn't save a2 register
  711.         o Several changes for better support of 2.04  system  release,
  712.           so:
  713.         - no more need for "arp.library"
  714.         - can execute ROM resident/internal commands
  715.         - AmigaDOS "Execute" command works
  716.         o Expression evaluator modified:
  717.           - hex (0x13F) values supported
  718.           - added "HEX", "<", ">", "&", and "|", operators
  719.         o Added "-o" switch to "if" command
  720.         o Bug fixed in "if" command: didn't always UnLock() file
  721.  
  722.     v1.41   30-Jun-92, 37864 bytes
  723.         o Bug  fixed  in  command  search:    doesn't  search  path  for
  724.           resident commands
  725.  
  726.     v1.42   06-Jul-92, 37872 bytes (Fish #706)
  727.         o Bug fixed in loop handling "for...done": command redirection
  728.           was "forgotten"
  729.         o No more "Enforcer" hits whith "!string"  (or  "shift-up"  in
  730.           command line editor) when there's no command  starting  with
  731.           "string" in history
  732.  
  733.     v1.50   21-Aug-92, 37736 bytes
  734.         o Added global var "keys" (allows to remap control keys)
  735.         o Optional argument "FROM file"
  736.         o More checking at startup time: proc->pr_CLI must be a  valid
  737.           pointeur, stop if started from WB, etc...
  738.         o Bug fixed in expression parsing: displayed result in decimal
  739.           even if "HEX" was specified
  740.         o Bug fixed under 1.3 system release: didn't give full command
  741.           path to function that start command execution
  742.  
  743.     v1.51   01-Sep-92, 37808 bytes
  744.         o Bug fixed in path search:  after    automatic  sourcing  of  a
  745.           script  (bit  "s"  detected)  the  following  commands  were
  746.           sometimes also considered like a script (and sourced !!!)
  747.         o "history str" displays only commands starting with "str"
  748.         o The "history" command checks CTRL-C while displaying history
  749.         o Displays command founded when using  "!!",  "!n"  or  "!str"
  750.           forms
  751.         o Bug fix: when you did  a    "cd  volume:"  the  $cwd  variable
  752.           didn't ended with a ':' (so  problems  for  example  with  a
  753.           "copy df0:foo $cwd")
  754.         o Bug fixed in file name completion: distinguished lower  case
  755.           and upper case characters.
  756.  
  757.     v1.52   22-Sep-92, 40000 bytes
  758.         o Allow the ${varname} form
  759.         o Added   variable     functions   (e.g.   "$var:function"    or
  760.           "${var:function}")
  761.         o Added "==" condition to "if" command
  762.         o Command line length is no longer limitated to 256 characters
  763.           under system 2.0
  764.         o Bug fixed: test "s" protection bit even if full command path
  765.           name is given
  766.         o Some bugs fixed in "for...done" loop handling
  767.         o The $cwd variable now always ended with a ":" or a "/"
  768.         o If no file  correspond  to  a  pattern,  displays  an  error
  769.           message and don't execute command
  770.  
  771.